<?php
	require_once("Menu.class.php");
	class DropMenu extends Menu{
	/*
		Classe Menu - Version 0.0
		Auteur : Loïc "MetalFox" PARRA
		Classe mère de la gestion des menus.
		
		README :
		Un DropMenu est un Menu dont un sous-menu peut-être affiché au survol de la souris, grâce au CSS approprié.
		Le CSS doit suivre quelques regles précises pour fonctionner : 
		- Les <div> permettant le "drop" (dont le nom de class est "drop") doivent avoir un CSS correct.
		- Si certains <li> n'ont pas de drop, leur nom de classe sera suffixée de "_nd" (pour No Drop). Il faut songer a ces modifications pour le CSS.
		- Afficher la methode "help()" permet d'afficher un code CSS commenté a copier/coller pour faire fonctionner le DropMenu.
		
		Donc, pour installer un DropMenu :
		1/ Créer une instance DropMenu.
		2/ Ajouter des catégories et des drops (les drops sont au format HTML).
		3/ Appelez la methode "help()" et copiez/collez le résultat dans votre CSS (en remplacant les valeurs entre dièses (#) par les bonnes valeurs).
		
		DEPENDANCES :
		- Menu.class.php (classe Menu) : Héritage.
		
		SUCRE SYNTAXIQUE :
		Pareil que dans Menu
		
		TODO IN LATER VERSION :
		Améliorer la méthode "help"
	*/
		var $drops;
		
		function DropMenu($idMenu,$classeCellules){
			/* 
				Constructeur du DropMenu.
				@param $idMenu : Id de la balise <ul>.
				@param $classeCellules : Classe par défaut des balises <li> (modifiables ensuite avec les boundaries).
				@return N/A.
			*/
			parent::__construct($idMenu,$classeCellules);
			$drops = array();
		}
		
		function setCategory($nomCategorie,$lienCategorie,$drop=''){
			/* 
				OVERRIDE 
				Ajoute une catégorie au menu. S'il existe déja, il le modifie.
				@param $nomCategorie : nom de la catégorie.
				@param $lienCategorie : lien pointant vers la catégorie.
				@return N/A.
			*/
			parent::setCategory($nomCategorie,$lienCategorie);
			$this->drops[$nomCategorie] = $drop;
		}
		
		function make(){
			/* 
				Créé le menu.
				@return : un String du menu mis en forme.
			*/
			$class = $this->cellClass;
			$menu = '<ul id="'.$this->id.'">';
			foreach($this->categories as $category => $link){
				if($category == "__boundary"){$class = $link;}
				else{
					if($this->drops[$category] != ''){
						$drop = '<div class="drop">'.$this->drops[$category].'</div>';$classExtention = '';
					}else{
						$drop = '';
						$classExtention = '_nd';
					}
					$a = new A($category,$link,$category);
					$menu .= '<li class="'.$class.$classExtention.'">'.$a.$drop.'</li>';
				}
			}
			$menu .= '</ul>';
			return $menu;
		}
		
		function __toString(){
			/* 
				MAGIC METHOD pour gérer la concatenation, les echos etc...
				@return : le menu mis en forme.
			*/
			return $this->make();
		}
		
		function help(){
			echo "Copiez/collez ce style dans votre feuille de styles CSS : <br/><br/>";
			echo "#".$this->id."{/*Valeurs par défaut de l'ensemble du menu (le ul)*/<br/>width:100%; /*Modifiable*/<br/>height:43px; /*Modifiable*/<br/>}<br/><br/>#".$this->id." li{/*Valeurs par défaut de l'ensemble des céllules du menu*/<br/>display:block; /*Modifiable*/<br/>float:left; /*Modifiable*/<br/>}<br/><br/>.drop{/*Valeurs de la div de drop*/<br/>width:280px; /*Modifiable*/<br/>position:absolute;<br/>left:-999em;<br/>}<br/><br/>#".$this->id." li:hover .drop{/*L'effet de drop*/<br/>left:auto;<br/>top:auto;<br/>z-index:30;<br/>}<br/><br/>";
		}
	}
?>